/**
 * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
 *
 * 
 * @param grid int整型二维数组 
 * @return int整型
 */
 function maxValue( grid ) {
  // write code here
  // 获取格子的长和宽
  var m = grid.length
  var n = grid[0].length
  // 初始化用来存放中间计算结果的一位数组
  var dp = new Array(n+1).fill(0) // 初始值都是0
  // 通过for循环来一次计算每一个格子的计算结果
  for(let i = 0; i < m ; i++){
    for(let j = 1 ;j < n + 1 ; j++){
      dp[j] = dp[j-1] > dp[j] ? dp[j-1] + grid[i][j-1] : dp[j] + grid[i][j-1] // dp[j] 是来自左边的dp【j-1】 和来自上方的dp[j](j=0的话就是0 不是 0的话就是 已经计算的结果) 这两个的最大值 这里的grid应该是从j-1开始 这是为了照顾dp的下标 这只是算出来一行的dp[j] 后续会对dp[j] 进行更新的
    }
  } // 机选完成之后就返回dp这个一维数组中的最后一个数字
  return dp[n]
}
module.exports = {
  maxValue : maxValue
};